/**
 * @file      os.h
 * @copyright Copyright (c) 2019, ZCW Co., Ltd. All Rights Reserved.
 * @brief     brief
 * @author    caiwang213@qq.com
 * @date      2019-08-24 22:44:51
 *
 * @note
 *  os.h defines
 */
#ifndef __OS_H__
#define __OS_H__

#ifdef _WIN32

#ifdef _MSC_VER
#pragma warning(disable: 4819)
#pragma warning(disable: 4200)
#pragma warning(disable: 4996)
#pragma warning(disable: 4251)
#endif

#include <winsock2.h>
#include <windows.h>
#include <objbase.h>
#endif

#ifndef _MSC_VER
#include <sys/time.h>
#endif

#if defined(__linux__) || defined(__APPLE__)
#include <unistd.h>
#include <arpa/inet.h>
#include <netdb.h>
#endif

#include <stdint.h>
#include <string>
using std::string;

namespace log4x
{
class isys;
class ithread;
class iprocess;
class itime;
class idir;
class istr;

class os
{
public:
    static void           init();

    static isys         * sys();
    static ithread      * thread();
    static itime        * time();
    static idir         * dir();
    static istr         * str();
    static iprocess     * process();
};
}
#endif
